Skip to content

[Feat] Ubuntu 26.04 support - #1769

Merged
mylinuxforwork merged 4 commits into
mylinuxforwork:mainfrom
solidus1983:feature/ubuntu-26-04-support
Oct 1, 2026
Merged

mylinuxforwork merged 4 commits into
mylinuxforwork:mainfrom
solidus1983:feature/ubuntu-26-04-support

Conversation

@solidus1983

@solidus1983 solidus1983 commented Aug 2, 2026 •

Copy link
Copy Markdown
Contributor

Description

Adds support for installing ML4W on Ubuntu 26.04.

Changes

  • Feature
  • Bug Fixes
  • Improved
  • Documentation
  • Other

Context

There's currently no official way to install ML4W on Ubuntu. This adds the Ubuntu preflight, post and package scripts, plus a few fixes to shared files that came up while testing.

Ubuntu setup (new files)

  • setup/dependencies/packages-ubuntu, setup/preflight-ubuntu.sh and setup/post-ubuntu.sh, following the same layout as Arch/Fedora/openSUSE.
  • preflight-ubuntu.sh enables universe and restricted and adds the repos Ubuntu doesn't ship: the cppiber Hyprland PPA, the danklinux PPA (cliphist), the Charm repo (gum), and the Mozilla Team PPA, pinned so firefox installs as a .deb instead of the snap. It also removes swww if it's installed.
  • post-ubuntu.sh builds quickshell, awww, nwg-displays and grim from source and installs matugen with cargo. grim is rebuilt because Ubuntu's package has no JPEG support, which breaks the default .jpg screenshot filename.
  • Installs Quickshell Overview and ML4W Dock with their official installers.
  • Installs ML4W Dotfiles Settings by cloning it and running make install, because its setup.sh only detects pacman/dnf/zypper and exits on Ubuntu.
  • Installs JetBrains Mono Nerd Font and Font Awesome 7. The fonts-font-awesome package is 4.7 and doesn't provide the "Font Awesome 7" family waybar uses.
  • Adds ConditionEnvironment drop-ins so hyprpolkitagent only runs under Hyprland and snapd-desktop-integration only under GNOME, and hides the mate-polkit autostart entry.
  • Masks the waybar, hypridle and hyprsunset user units, since autostart.lua already launches them.
  • Long-running steps go through run_quiet/LOG_FILE, which the installer provides (same as the other distros). curl downloads retry on network errors.

Shared changes (all distros)

  • autostart.lua: starts hyprpolkitagent.service and falls back to polkit-gnome when that unit doesn't exist. Skips launching swaync when post-ubuntu.sh has set up D-Bus activation, because starting it both ways raced and failed with "already running!".
  • post.sh: installs walker and elephant through ml4w-walker, which supports Arch, Fedora, openSUSE and Ubuntu 25.10+. ml4w-autostart now runs ml4w-walker start. Without it elephant never starts and walker hangs.
  • launcher.sh: fixes the walker launcher. It called ~/.config/walker/launch.sh, which was removed upstream on 4 August, so choosing walker did nothing. It now runs walker -t ml4w.
  • Restores the ml4w walker theme (.config/walker/themes/ml4w/style.css) and its matugen template, both removed upstream in early August, so walker matches the system colours.
  • New matugen template (hyprtoolkit-colors.conf) to theme the hyprpolkitagent dialog.

How Has This Been Tested?

  • Tested on Arch Linux/Based Distro.
  • Tested on Fedora Linux/Based Distro.
  • Tested on openSuse.
  • Tested on Ubuntu 26.04

Tested in a VM while building, then a clean install on bare metal.

The grim build was added afterwards. I built grim 1.5.0 with the same meson flags and took a JPEG screenshot with it, but haven't run the full install with that step yet.

The changes to autostart.lua, post.sh, launcher.sh and ml4w-autostart affect every distro but have only been tested on Ubuntu.

Checklist

  • My code follows the style guidelines of this project.
  • I have performed a self-review of my code.
  • I have commented on my code, particularly in hard-to-understand areas.
  • My changes do not introduce new warnings.
  • I have added tests that prove my fix is effective or that my feature works.
  • I have made corresponding changes to the documentation
  • New and existing unit tests pass locally with my changes.

Screenshots

Screenshot from 2026-08-02 14-30-32 Screenshot from 2026-08-02 14-28-55 Screenshot from 2026-08-02 14-27-58 Screenshot from 2026-08-02 14-26-42 Screenshot from 2026-08-02 14-26-06

Additional Notes

The installer (ml4w-dotfiles-installer) will need a separate PR to recognise Ubuntu and run these scripts.

@mylinuxforwork

Copy link
Copy Markdown
Owner

I am looking forward testing this.

@solidus1983

Copy link
Copy Markdown
Contributor Author

I am looking forward testing this.

I can't wait to hear feedback and what changes are possibly needed.
If Testing works well and there are no effects on the other distros, I will then change PR from draft.

However, which repo do I need to edit to make the online command detect Ubuntu?

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from 4b92931 to d9e73c6 Compare August 2, 2026 18:23
@solidus1983

Copy link
Copy Markdown
Contributor Author

Updated my branch to the latest main

@solidus1983 solidus1983 mentioned this pull request Aug 2, 2026
1 task done
@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from d9e73c6 to e66b031 Compare August 3, 2026 16:09
@solidus1983

Copy link
Copy Markdown
Contributor Author

@mylinuxforwork You will need the installer script, which is https://github.com/solidus1983/dotfiles/blob/test/ubuntu-26-04-vm-install/install-ubuntu.sh if you want to test.

I have also rebased from main again.

@solidus1983

Copy link
Copy Markdown
Contributor Author

My laptop died so awaiting for engineer to come out to replace main board after I will rebase again.

@mylinuxforwork

Copy link
Copy Markdown
Owner

Good look with your Laptop. No stress. I have just released ML4W OS 2.15 and Ubuntu support would be next ;-)

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from e66b031 to b795983 Compare August 5, 2026 16:02
@solidus1983

Copy link
Copy Markdown
Contributor Author

Right i have now rebased my branches with the latest changes, and my laptop is now working again!

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from b795983 to 2e2f0a4 Compare August 14, 2026 10:52
@solidus1983

Copy link
Copy Markdown
Contributor Author

Rebased on the latest main.

@solidus1983
solidus1983 marked this pull request as ready for review August 14, 2026 13:51
@solidus1983
solidus1983 marked this pull request as draft August 14, 2026 13:57
@solidus1983

Copy link
Copy Markdown
Contributor Author

Testing some changes to Ubuntu scripts during a code cleanup.

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch 2 times, most recently from 3d9601f to 8b9aac1 Compare August 14, 2026 15:55
@solidus1983
solidus1983 marked this pull request as ready for review August 14, 2026 16:10
@solidus1983

Copy link
Copy Markdown
Contributor Author

@mylinuxforwork I am now ready for code review.

Should be done now, and will keep the rebases up to date from this point forward.

Awaiting your feedback, and will make changes where requested to do so.

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch 2 times, most recently from 234c925 to 396eb72 Compare August 20, 2026 20:04
@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch 5 times, most recently from 2294bcb to 8215656 Compare August 31, 2026 19:49
@solidus1983

Copy link
Copy Markdown
Contributor Author

Currently away for Training, will rebase with the main branch once I am able to do so.

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from 8215656 to b1ab6d7 Compare September 23, 2026 20:08
@solidus1983
solidus1983 marked this pull request as draft September 27, 2026 15:22
@solidus1983

solidus1983 commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor Author

A Clean install of Ubuntu and running the updated script show issues, so I am now trying to resolve them.

Update:

Seems the issue is with VirtualBox, running the same script without changes on bare-metal (ThinkPad T440p) hardware worked fine

@solidus1983
solidus1983 marked this pull request as ready for review September 27, 2026 19:02
@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch 2 times, most recently from 314344d to 8299eef Compare September 27, 2026 21:55
@solidus1983

Copy link
Copy Markdown
Contributor Author

@mylinuxforwork Will do another rebase tonight or tomorrow, as I see you are adding new repos that will change how my scripts work.

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from 8299eef to 7f6a6e9 Compare September 28, 2026 20:11
@mylinuxforwork

Copy link
Copy Markdown
Owner

A Clean install of Ubuntu and running the updated script show issues, so I am now trying to resolve them.

Update:

Seems the issue is with VirtualBox, running the same script without changes on bare-metal (ThinkPad T440p) hardware worked fine

Virtualbox doesn’t work well. You should use qemu with virtmanager and enable 3D acceleration. You can see it in many of my videos like in the latest cachyos video.

@mylinuxforwork

Copy link
Copy Markdown
Owner

@mylinuxforwork Will do another rebase tonight or tomorrow, as I see you are adding new repos that will change how my scripts work.

I have moved the power menu into an own repo and added the installer to the post.sh The rest should work as before.

@mylinuxforwork

Copy link
Copy Markdown
Owner

I am planning the merge of your commits on the upcoming weekened into the Rolling Release. Then I can support you with testing.

@mylinuxforwork

Copy link
Copy Markdown
Owner

@solidus1983 Could install elephant and walker successfully with the following script: https://github.com/mylinuxforwork/ml4w-walker
Only curl and git was needed as dependencies for Ubuntu 26.04.1
You can remove walker completely from your post-ubuntu.sh
I will cover it in my post.sh

@solidus1983

solidus1983 commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor Author

@solidus1983 Could install elephant and walker successfully with the following script: https://github.com/mylinuxforwork/ml4w-walker Only curl and git was needed as dependencies for Ubuntu 26.04.1 You can remove walker completely from your post-ubuntu.sh I will cover it in my post.sh

Thanks for heads up, currently working on the nl4w-walker in my testing branch, but seeing the same issue with elephant as i did with my script till i placed some deps in.

I'll figure it out and get it working.

Edit:
It was a quick fix: simply running ml4w-walker update

@mylinuxforwork

Copy link
Copy Markdown
Owner

Just send me a note as soon as you think that I can merge it into the Rolling Release. Ubuntu VM is already up and running for testing.

@solidus1983

Copy link
Copy Markdown
Contributor Author

@mylinuxforwork Will do just testing now on the QEMU as you suggested, once done, I will then merge changes from testing to feature branch and give you the nod!

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch 3 times, most recently from d2e51a3 to 1b4decb Compare September 29, 2026 11:38
@solidus1983

Copy link
Copy Markdown
Contributor Author

@mylinuxforwork The work is now ready, and the installation script is still in the testing branch.

Any scripts that still perform checks on the OS that go to exit 1 i have for now kept in post-ubuntu.sh; I will remove them once the checks have been updated.

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch 2 times, most recently from c8b2d07 to bb6a32d Compare September 29, 2026 13:06
@solidus1983

Copy link
Copy Markdown
Contributor Author

Fixing some bugs quickly

@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from abaf60e to dcfebd8 Compare September 29, 2026 14:57
Add preflight, post and package list scripts for Ubuntu, following the
same layout as Arch, Fedora and openSUSE.

preflight-ubuntu.sh enables universe and restricted and adds the repos
Ubuntu doesn't ship: the cppiber Hyprland PPA, the danklinux PPA for
cliphist, the Charm repo for gum, and the Mozilla Team PPA, pinned so
that firefox installs as a .deb rather than the snap. It also removes
swww if it's installed.

post-ubuntu.sh:
- Builds quickshell, awww, walker, elephant and nwg-displays from
  source, and installs matugen with cargo. None of these are packaged
  for Ubuntu.
- Installs Quickshell Overview, ML4W Dock and ML4W Dotfiles Settings.
  The settings app's setup.sh only knows pacman, dnf and zypper, so it
  is cloned and installed with make install instead.
- Installs JetBrains Mono Nerd Font and Font Awesome 7.
- Adds ConditionEnvironment drop-ins so hyprpolkitagent only runs under
  Hyprland and snapd-desktop-integration only under GNOME, and hides
  the mate-polkit autostart entry.
- Masks the waybar, hypridle and hyprsunset user units, which would
  otherwise start alongside the copies autostart.lua launches.

autostart.lua starts hyprpolkitagent.service and falls back to
polkit-gnome when that unit doesn't exist. It also skips launching
swaync when post-ubuntu.sh has set up D-Bus activation, because
starting it both ways raced and failed with "already running!".

Add a matugen template to theme the hyprpolkitagent dialog.

Signed-off-by: William Rogers <hacktrix2006@gmail.com>
ml4w-walker is the new upstream installer for walker, elephant and the
providers. It supports Arch, Fedora, openSUSE and Ubuntu 25.10+, so
call it from post.sh and drop the cargo/go builds from post-ubuntu.sh.
Walker now gets installed on every distro.

Add `ml4w-walker start` to ml4w-autostart. Without it elephant is never
started and walker hangs waiting for its socket.

launcher.sh called ~/.config/walker/launch.sh, which upstream removed
along with the rest of .config/walker, so choosing walker as the
launcher did nothing. Call walker directly.

Signed-off-by: William Rogers <hacktrix2006@gmail.com>
Upstream removed .config/walker, including the ml4w theme, and the
matugen walker template in early August. Walker still reads themes
from ~/.config/walker/themes, so restore the theme's style.css as it
was and the matugen template that writes ~/.config/walker/colors.css.
launcher.sh now passes -t ml4w so walker uses it.

Signed-off-by: William Rogers <hacktrix2006@gmail.com>
Ubuntu's grim package is built without JPEG support. The default
screenshot filename ends in .jpg, so screenshot.sh fails with "jpeg
support disabled" and nothing gets saved.

Build grim 1.5.0 with -Djpeg=enabled and install it to /usr/local/bin,
which comes before the packaged grim on PATH. The step is skipped when
/usr/local/bin/grim already links libjpeg.

Tested by building 1.5.0 with the same flags and taking a JPEG
screenshot with it. The post-ubuntu.sh step itself hasn't been run yet.

Signed-off-by: William Rogers <hacktrix2006@gmail.com>
@solidus1983
solidus1983 force-pushed the feature/ubuntu-26-04-support branch from b637930 to 75b702b Compare September 29, 2026 16:20
@solidus1983

Copy link
Copy Markdown
Contributor Author

Right, I am now finished with this PR.

@mylinuxforwork, happy testing.

@mylinuxforwork

Copy link
Copy Markdown
Owner

Great. Thank you. Will start testing soon.

@mylinuxforwork
mylinuxforwork merged commit 6084b3e into mylinuxforwork:main Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants